/*
 * main.c
 *
 *  Created on: 15-03-2013
 *      Author: MCzepczyński
 */

/******************************************************************************************
 *	Deklaracje dołączanych plików nagłówkowych i bibliotek								 *
 *****************************************************************************************/
#include <avr/io.h>
#include <util/delay.h>
#include <avr/sleep.h>

#include "utils.h"
#include "turn_signal.h"
#include "wiper.h"
#include "term_vt100.h"

/******************************************************************************************
 *	Deklaracje zmiennych globalnych								                         *
 *****************************************************************************************/
uint8_t eem_config EEMEM;
//volatile uint8_t wipers;
volatile uint16_t fog_timer;

/******************************************************************************************
 *	Funkcje pomocnicze programu głównego						                         *
 *****************************************************************************************/


/******************************************************************************************
 *	Funkcja główna															 			 *
 *****************************************************************************************/
int main(void){

	/************************ Deklaracja zmiennych lokalnych ************************/
	uint8_t module_config = 0, module_config_eem = 0;

	/************************** Inicjalizacja podzespołów ***************************/
	config_peripherals();

	module_config = check_module_config();

	/* Odczyt konfiguracji modulu z pamieci EEPROM */
	eeprom_read_block(&module_config_eem, &eem_config, sizeof(module_config_eem));

	/* Sprawdzenie konfiguracji z EEPROM i porownanie z aktualna konfiguracja
	 * Jesli module_config == 0 -> dokonaj zal/wyl trybu komfortowego w zaleznosci od trybu w EEPROM */
	if(module_config_eem == 1 && module_config == 0){ // wylaczenie trybu komfortowego
		module_config = 0;
		eeprom_write_block(&module_config, &eem_config, sizeof(module_config)); // zapisanie konfiguracji do EEPROM
	}else if(module_config_eem == 0 && module_config == 0){ // wlaczenie trybu komfortowego
		module_config = 1;
		eeprom_write_block(&module_config, &eem_config, sizeof(module_config));
	}else{ // module_config == 1 -> nie ma zmiany trybu, pozostanie przy trybie zapisanym w EEPROM
		module_config = module_config_eem;
	}



	set_sleep_mode(SLEEP_MODE_PWR_SAVE);
	sleep_enable();

	sei();


	/********************************* Pętla główna *********************************/
	while(1){
/*		if(module_config == 1){			// tryb komfortowy
			wipers();
			turn_signals();
		}else{							// tryb normalnej pracy
			wipers_default();
			turn_signals_default();
		}*/

		sleep_mode();

	}
	/********************************************************************************/
}

/******************************************************************************************
 *	Deklaracje funkcji obsługi przerwań								  					 *
 *****************************************************************************************/

/*Kierunkowskaz LEWY*/
ISR (INT0_vect){
	while(wiper_status==idle)
		wipers();
}

ISR (TIMER0_COMP_vect){

	uint16_t x;
	x = wiper_timer;
	if (x) wiper_timer = --x;	// Timer programowy 1 100Hz (10ms)

	x = turn_timer;
	if (x) turn_timer = --x;	// Timer programowy 2 100Hz (10ms)
}

ISR (TIMER2_COMP_vect){
//	static uint8_t cnt;
//
//	if(cnt>=pwm1) PORTC |= (1<<PC0); else PORTC &= ~(1<<PC0);
//
//	cnt++;
}

/******************************************************************************************
 *	Koniec pliku main.c
 *****************************************************************************************/
